Supported Data Types
Retrieving and sending certain data types can be expensive. Advances in processor technology brought significant improvements to the way that operations such as floating-point math are handled; however, retrieving and sending certain data types are still expensive when the active portion of your application will not fit into on-chip cache. When you are working with data on a large scale, it is still important to select the data type that can be processed most efficiently.
For example, integer data is processed faster than floating-point data. Floating-point data is defined according to internal database-specific formats, usually in a compressed format. The data must be decompressed and converted into a different format so that it can be processed by the wire protocol.
Processing time is shortest for character strings, followed by integers, which usually require some conversion or byte ordering. Processing floating-point data and timestamps is at least twice as slow as integers.
DB2 UDB on z/OS
The following table lists the data types that the ODBC driver supports for DB2 UDB on z/OS:
Table B-1. Mapping Data Types for DB2 UDB on z/OS to ODBC Data Types DB2 UDB Data Type ODBC Data Type (ANSI) BIGINT SQL_BIGINT BLOB SQL_LONGVARBINARY CHAR(size) SQL_CHAR CHAR(size) FOR BIT DATA SQL_BINARY CLOB SQL_LONGVARCHAR DATE SQL_DATE DBCLOB SQL_WLONGVARCHAR DECIMAL SQL_DECIMAL FLOAT SQL_FLOATSQL_DOUBLE INTEGER SQL_INTEGER LONGVARCHAR SQL_LONGVARCHAR LONGVARBINARY SQL_LONGVARBINARY NUMERIC SQL_NUMERIC REAL SQL_REAL SMALLINT SQL_SMALLINT TIME SQL_TIME TIMESTAMP SQL_TIMESTAMP1SQL_CHAR2 VARCHAR(size) SQL_VARCHAR VARCHAR(size) FOR BIT DATA SQL_VARBINARY
1Only present when DataSourceFetchTimestampAsString=False.
2Only present when DataSourceFetchTimestampAsString=True.
Table B-2. Mapping Data Types for DB2 UDB for z/OS to ADO Data Types DB2 UDB Data Type OLE DB Data Type BIGINT DBTYPE_I8 BLOB DBTYPE_BYTES CHAR(size) DBTYPE_STR CHAR(size) FOR BIT DATA DBTYPE_BYTES CLOB DBTYPE_STR DATE DBTYPE_DBDATE DECIMAL DBTYPE_DECIMAL FLOAT DBTYPE_R8 INTEGER DBTYPE_I4 LONG VARCHAR DBTYPE_STR LONG VARCHAR FOR BIT DATA DBTYPE_BYTES NUMERIC DBTYPE_NUMERIC REAL DBTYPE_R4 SMALLINT DBTYPE_I2 TIME DBTYPE_DBTIME TIMESTAMP DBTYPE_DBTIMESTAMP1DBTYPE_STR2 VARCHAR(size) DBTYPE_STR VARCHAR(size) FOR BIT DATA DBTYPE_BYTES
1Only present when DataSourceFetchTimestampAsString=False.
2Only present when DataSourceFetchTimestampAsString=True.
DB2 UDB on Linux, UNIX, and Windows
The following table lists the data types that the ODBC driver DB2 UDB on Linux, UNIX, and Windows :
Table B-3. Mapping Data Types for DB2 UDB on Linux/UNIX/Windows to ODBC Data Types DB2 SQL Data Type ODBC Data Types (Non-Unicode Service) ODBC Data Types
(Unicode Service) BIGINT SQL_BIGINT SQL_BIGINT BLOB1 SQL_LONGVARBINARY SQL_LONGVARBINARY CHAR(size) SQL_CHAR SQL_CHAR2SQL_WCHAR CHAR(size) FOR BIT DATA SQL_BINARY SQL_BINARY CLOB1 SQL_LONGVARCHAR SQL_WLONGVARCHAR3 DATE SQL_DATE SQL_DATE DBCLOB4 Not supported SQL_WLONGVARCHAR DECIMAL SQL_DECIMAL SQL_DECIMAL FLOAT SQL_DOUBLESQL_FLOAT SQL_DOUBLESQL_FLOAT GRAPHIC(size)4 Not supported SQL_WCHAR INTEGER SQL_INTEGER SQL_INTEGER LONG VARCHAR1 SQL_LONGVARCHAR SQL_LONGVARCHAR2 LONG VARCHAR FOR BIT DATA1 SQL_LONGVARBINARY SQL_LONGVARBINARY LONG VARGRAPHIC4 Not supported SQL_WLONGVARCHAR NUMERIC SQL_NUMERIC SQL_NUMERIC REAL SQL_REAL SQL_REAL SMALLINT SQL_SMALLINT SQL_SMALLINT TIME SQL_TIME SQL_TIME TIMESTAMP SQL_TIMESTAMPSQL_CHAR5 SQL_TIMESTAMPSQL_CHAR5 VARCHAR(size) SQL_VARCHAR SQL_VARCHAR2SQL_WVARCHAR VARCHAR(size) FOR BIT DATA SQL_VARBINARY SQL_VARBINARY VARGRAPHIC(size)4 Not supported SQL_WVARCHAR
1Depends on setting of the DataSourceLobAsLongvar service attribute. When set to False, LOB data types will be handled as LOB objects; when set to True, LOB data types are handled as Longvar data types.
2If DataSourceReportChar is enabled, the CHAR, VARCHAR, LONGVARCHAR data types are additionally reported as the non-Unicode data types (see previous table)
3Depending on DataSourceReportLobAsLongVarchar: if set to TRUE: LONGVARCHAR data types are reported; if set to FALSE: LOB data types are reported.
4If DataSourceDB2GraphicSupport is enabled, the GRAPHIC datatypes will be available.
5DataSourceFetchTimestampAsString specifies whether timestamps are fetched as character strings.
Informix
The following table lists the data types that the ODBC driver supports for Informix:
Microsoft SQL Server
The following table maps the ODBC data types that the ODBC driver supports to the Microsoft SQL Server:
Table B-5. Mapping Data Types for Microsoft SQL Server to ODBC Data Types Microsoft SQL Server 2000, 2005 Data Type
ODBC Data Type bigint SQL_BIGINT bigint identity SQL_BIGINT binary SQL_BINARY bit SQL_BIT char SQL_CHAR1SQL_WCHAR2 datetime SQL_DATETIME3SQL_CHAR4 decimal SQL_DECIMAL decimal identity SQL_DECIMAL float SQL_FLOAT guid SQL_BINARY image SQL_LONGVARBINARY int SQL_INTEGER int identity SQL_INTEGER money SQL_DECIMAL nchar SQL_CHAR1SQL_WCHAR2 ntext SQL_LONGVARCHAR1SQL_WLONGVARCHAR2 nvarchar(max) SQL_LONGVARCHAR numeric SQL_NUMERIC numeric identity SQL_NUMERIC nvarchar SQL_VARCHAR1SQL_WVARCHAR2 real SQL_REAL smalldatetime SQL_DATETIME3SQL_CHAR4 smallint SQL_SMALLINT smallint identity SQL_SMALLINT smallmoney SQL_DECIMAL SQLVariant SQL_BINARY sysname SQL_VARCHAR1SQL_WVARCHAR2 text SQL_LONGVARCHAR1SQL_WVARCHAR2 timestamp SQL_BINARY tinyint SQL_TINYINT tinyint identity SQL_TINYINT uniqueidentifier SQL_BINARY varbinary SQL_VARBINARY varbinary(max) SQL_LONGVARBINARY varchar SQL_VARCHAR1SQL_WVARCHAR2 varchar(max) SQL_LONGVARCHAR1
1Not present when DataSourceReportChar=False and ServiceCodePage=Database
2Only present whe ServiceCodePage=Database
3Only present when DataSourceFetchTimestampAsString=False
4Only present when DataSourceFetchTimestampAsString=True
Oracle
The following table lists the data types that the ODBC driver supports for Oracle:
Table B-6. Mapping the Oracle Data Types to ODBC Data Types Oracle 9i Data Type Oracle10g Data Type ODBC Data Type BFILE BFILE SQL_LONGVARBINARY BINARY_FLOAT SQL_REAL BINARY_DOUBLE SQL_DOUBLE BLOB BLOB SQL_LONGVARBINARY CHAR(size) CHAR(size) SQL_CHAR1SQL_WCHAR2 CLOB CLOB SQL_LONGVARCHAR3SQL_WLONGVARCHAR2 DATE DATE SQL_TYPE_TIMESTAMP LONG LONG SQL_LONGVARCHAR1SQL_WLONGVARCHAR2 LONG RAW LONG RAW SQL_LONGVARBINARY NCHAR(size) NCHAR(size) SQL_CHAR4SQL_WCHAR5 NCLOB NCLOB SQL_LONGVARCHAR4SQL_WLONGVARCHAR5 NUMBER NUMBER SQL_FLOAT NUMBER(p,s) NUMBER(p,s) SQL_DECIMAL NVARCHAR2(size) NVARCHAR2(size) SQL_VARCHAR4SQL_WVARCHAR5 RAW(size) RAW(size) SQL_VARBINARY ROWID ROWID SQL_VARCHAR TIMESTAMP TIMESTAMP SQL_TIMESTAMP6SQL_CHAR7 TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE SQL_TYPE_TIMESTAMP6SQL_CHAR7 TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE TIMESTAMP WITH TIME ZONE SQL_CHAR7, 8 VARCHAR2(size) SQL_VARCHAR1 VARCHAR2(size) SQL_WVARCHAR2
1Not present when DataSourceReportChar=False, ServiceCodePage=Database and database character set is Unicode
2Only present when ServiceCodePage=Database and database character set is Unicode
3Not present when ServiceCodePage=Database and database character set is Unicode
4Not present when ServiceCodePage=Database and database character set is Unicode
5Only present when ServiceCodePage=Database and national character set is Unicode
6Only present when DataSourceFetchTimestampAsString=False
7Only present when DataSourceFetchTimestampAsString=True
8Only present when DataSourceORAMapTSWTZ=True
9The time zone value is not accessible (or can not be set). Instead, the client time zone is used either to pass to Oracle or to convert from the stored time zone value.
Sybase
The following table lists the data types that the ODBC driver supports for Sybase:
Table B-7. Mapping the Data Types for Sybase to ODBC Data Types Sybase Data Type ODBC Data Type BIGINT SQL_BIGINT BINARY SQL_BINARY BIT SQL_BIT CHAR SQL_CHAR1SQL_WCHAR2 DATETIME SQL_TIMESTAMP3SQL_CHAR4 DECIMAL SQL_DECIMAL FLOAT SQL_FLOAT IMAGE SQL_LONGVARBINARY INT SQL_INTEGER MONEY SQL_DECIMAL NUMERIC SQL_NUMERIC REAL SQL_REAL SMALLDATETIME SQL_TIMESTAMP3SQL_CHAR4 SMALLINT SQL_SMALLINT SMALLMONEY SQL_DECIMAL SYSNAME SQL_VARCHAR5SQL_WVARCHAR2 TEXT SQL_LONGVARCHAR1SQL_WLONGVARCHAR2 TIMESTAMP SQL_BINARY TINYINT SQL_TINYINT UBIGINT SQL_DECIMAL UNICHAR SQL_WCHAR6 UNIVARCHAR SQL_WVARCHAR6 VARBINARY SQL_VARBINARY VARCHAR SQL_VARCHAR1SQL_WVARCHAR2
1Not present when DataSourceReportChar=False and ServiceCodePage=Database
2Only present when ServiceCodePage=Database
3Only present when DataSourceFetchTimestampAsString=False
4Only present when DataSourceFetchTimestampAsString=True
5Not present when ServiceCodePage=Database
6Only present when ServiceCodePage=Database and database character set is UTF-8